package com.atguigu.gmall.cart.controller;


import com.atguigu.gmall.cart.service.CartInfoService;
import com.atguigu.gmall.common.result.Result;
import com.atguigu.gmall.model.cart.CartInfo;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;


/**
 * 购物车控制层
 */
@RestController
@RequestMapping("/api/cart")
public class CartInfoController {
    @Resource
    private CartInfoService cartInfoService;

    /**
     * 加购
     * @param skuId
     * @param num
     * @return
     */
    @GetMapping("/addCart")
    public Result addCart(Long skuId , Integer num){
        cartInfoService.addCart(skuId,num);
        return Result.ok();
    }

    /**
     * 查询用户购物中的数据
     * @return
     */
    @GetMapping("/getCart")
    public Result getCartInfo(){
        return Result.ok(cartInfoService.getCartInfo());
    }

    /**
     * 选中购物车中的数据
     * @param id
     * @return
     */
    @GetMapping("/check")
    public Result check(Long id){
        Short status = 1 ;
        cartInfoService.checkUpdate(id,status);
        return Result.ok();
    }

    /**
     * 取消选中购物车中的数据
     * @param id
     * @return
     */
    @GetMapping("/unCheck")
    public Result unCheck(Long id){
        Short status = 0 ;
        cartInfoService.checkUpdate(id,status);
        return Result.ok();
    }

    /**
     * 根据购物车ID删除购物车中的数据
     * @param id
     * @return
     */
    @GetMapping("/removeCart")
    public Result removeCart(Long id){
        cartInfoService.removeCart(id);
        return Result.ok();
    }

    /**
     * 修改购物车中商品数量
     * @param id
     * @param num
     * @return
     */
    @GetMapping("/updateCartNum")
    public Result updateCartNum(Long id, Integer num){
        cartInfoService.updateCartNum(id,num);
        return Result.ok();
    }

    /**
     * 用户登录账号后合并购物车
     * @param cartInfoList
     * @return
     */
    @PostMapping("/mergeCart")
   public Result mergeCart(@RequestBody List<CartInfo> cartInfoList){
        cartInfoService.mergeCart(cartInfoList);
        return Result.ok();
   }

    /**
     * 获取用户当前订单中购物车数据
     * @return
     */
   @GetMapping("/getOrderConfirmCart")
    public Result getOrderConfirmCart(){
        return Result.ok(cartInfoService.getOrderConfirmCart());
   }
}
